package NiuKe.JianZhiOffer;

import java.awt.*;

/**
 * 描述
 * 输入一个链表，输出一个链表，该输出链表包含原链表中从倒数第k个结点至尾节点的全部节点。
 * 如果该链表长度小于k，请返回一个长度为 0 的链表。
 * 示例1
 * 输入：
 * {1,2,3,4,5},1
 * 返回值：
 * {5}
 *
 */
public class JZ14 {
    public ListNode FindKthToTail (ListNode pHead, int k) {
        //计算长度，再次循环获取：
        /*if(pHead == null) return pHead;
        int length = 0 ;
        ListNode temp = pHead;
        while(true){
            length++;
            if(temp.next == null)break;
            temp = temp.next;
        }
        if(length < k) return null;
        if(length == k) return pHead;
        int num = 0;
        while(true){
            num++;
            if(num == length - k)return pHead.next;
            pHead = pHead.next;
        }*/

        //双指针，两个指针之间的距离为 k
        if(pHead == null) return pHead;
        ListNode temp = pHead;
        while(true){
            k--;
            if(k < 0){
                pHead = pHead.next;
            }
            if(k > 0 && temp.next == null){
                return null;
            }

            if(k <= 0 && temp.next == null){
                return pHead;
            }
            temp = temp.next;
        }

    }
}
